The present invention relates to a method of increasing the availability of an application executed by a computer system. More particularly, the invention relates to a method of increasing the availability of an application executed by one or more application clients and a multitude of application servers executing the same application.
Enterprises depend on the availability of the systems supporting their day to day operation. A system is called available if it is up and running and is producing correct results. The availability of a system is the fraction of time it is available. MTBF denotes the mean time before failure of such a system, i.e. the average time a system is available before a failure occurs (this is the reliability of the system). MTTR denotes its mean time to repair, i.e. the average time it takes to repair the system after a failure (this is the downtime of the system because of the failure). Ideally, the availability of a system is 100%. Today, a system can claim high availability if its availability is about 99.999% (it is called xe2x80x9cfault tolerantxe2x80x9d if its availability is about 99.99% ). J. Gray and A. Reuter, xe2x80x9cTransaction processing: Concepts and Techniquesxe2x80x9d, San Mateo, Calif. Morgan Kaufmann 1993 give further details on these aspects. As outlined in further details by D. Loshin, xe2x80x9cHigh performance computing demystifiedxe2x80x9d, Academic Press, Inc., 1994 and K. Hwang, Advanced computer architecture: Parallelism, Scalability, Programmability, McGraw-Hill, Inc., 1993 and J. Gray and A. Reuter, xe2x80x9cTransaction processing: Concepts and Techniquesxe2x80x9d, San Mateo, Calif.; Morgan Kaufmann 1993 the fundamental mechanisms to improve MTTR are based on xe2x80x9credundancyxe2x80x9d: The availability of hardware is improved by building clusters of machines and the availability of software is improved by running the same software in multiple address spaces.
With the advent of distributed systems, techniques have been invented which use two or more address spaces on different machines running the same software to improve availability (often called active replication). Further details on these aspects may be found in S. Mullender, xe2x80x9cDistributed Systemsxe2x80x9d, ACM Press, 1993. In using two or more address spaces on the same machine running the same software which gets its request from a shared input queue, the technique of warm backups is generalized by the hot pool technique; refer for instance to F. Leymann and D. Roller, xe2x80x9cBuilding a robust workflow management system with persistent queues and stored proceduresxe2x80x9d, in: Proc. Intl. Conf. on Data Engineering ICDE 98 (Orlando, Fla., Feb. 25-28, 1998).
Despite of all of the detailed progress, further improvements are urgently required for supporting enterprises in increasing the availability of their applications and allowing, for instance, for electronic business on a 7 (days)*24 (hour) basis. Due to the ubiquity of world-wide computer networks, at any point in time somebody might have interest in accessing a certain application server.
It is, therefore, an objective of the present invention to increase the availability of an application executed by a computer system.
The foregoing and other objectives are realized by the present invention which provides a method for increasing the availability of an application executed by an application client (131) and a multitude of M application servers (101 to 118). Under the current invention, an application client which is sending an application service request to an application server requesting execution of an application service of said application performs a multi-casting step (202) wherein the application client requests execution of an application-service by sending the identical application service request (121, 122, 123) to a collection of N of said application servers with 1 less than Nxe2x89xa6M in parallel.
Traditionally, computer power is considered to be expensive by many people. Submitting or even performing one and the same request multiple times would not be a viable option for this community. But with the advent of cheap server machines that can be clustered together to ever increasing compute power the cost argument no longer applies. Consequently, the core of the present invention, namely cloning and sending request messages for higher availability does not have any cost obstructions. The advantage will be improved availability of message based applications in clusters.
Moreover, not only availability of an application, but also response time for an application service may be improved. If an identical application service request is sent in parallel to multiple application servers, automatically that application server, the xe2x80x9cfirstxe2x80x9d application server with typically the lowest workload, will pick up the application service request first. In the case of application service requests to be executed once only, the additional processing by other application servers, to determine whether a xe2x80x9cfirstxe2x80x9d application server has already executed that application service request, is neglectable and does not result in a significant workload increase, if the other application servers abandon to process the application service request. In essence, the current teaching also offers a kind of automatic workload balancing. Due to the invention""s flexibility, availability of an application may be improved by hardware redundancy as well as by software redundancy.
Additional advantages are accomplished if, in said multi-casting step, the application client marks (202) the application service request with a xe2x80x9conce-onlyxe2x80x9d mark indicating that the application service request is to be executed only once. Based on this feature, the current teaching may be applied to the all types of application services, those which may be executed multiple times without jeopardizing application integrity and those which may be executed once only. Moreover, this xe2x80x9conce-onlyxe2x80x9d mark may be used by an application server to decide if it has to determine that the requested application service is executed once only.
Additional advantages are accomplished by the teaching of an additional application-service-execution step (206), wherein an addressed application server, being an application server of the application server collection, is executing said application service request. Through this teaching an application server is actually enabled to also execute the requested application service.
Additional advantages are accomplished by the teaching of an only-once-determination step, preceding the application-service-execution step. Within the only-once-determination step in a first step (203), the addressed application server determines if the application service request is to be executed once only. If the application service request is to be executed once only, in a second step (204) the addressed application server checks whether the application service request has already been executed. If the application service request has not been executed yet, in a third step (205) the application service request is marked executed and the addressed application server proceeds with the application service execution step. This teaching extends the current invention to support a xe2x80x9conce onlyxe2x80x9d execution behavior for an application service request.
Additional advantages are accomplished if, in the first step, the addressed application server determines by analyzing the type of application service or mark, if the application service request is to be executed once only. Both of the suggested solutions to identify a xe2x80x9conce onlyxe2x80x9d application service request are attractive as they are easy to implement.
Additional advantages are accomplished if the second step is performed by retrieving from an application service request database (213) an indication, whether the application service request has been executed already. And, in the third step, the application service request is marked executed by storing a corresponding indication into the application service request database.
The proposed teaching solves the problem of how the application servers can signal each other that a certain xe2x80x9conly oncexe2x80x9d application request has been executed already by one of these application servers. The suggestion to query a common database keeps communication overhead between the application servers minimal.
Additional advantages are accomplished by preceding the multi-casting step by an application server collection determination step (201) for determining the application server collection. The application server collection might be determined by reading a profile (211) defining a set of associated application servers for the application client. This set of associated application servers, or a subset thereof, might then be used as the application server collection. Moreover, the set of associated application servers could depend on the type of application service (i.e., depending on the type of requested application service, the set of associated application servers could be different). As a separate feature, or in combination with the preceding teaching, the application server collection might be determined by retrieving from an application server collection database (212) a set of currently active application servers. This set of currently active application servers or a subset thereof might be used as said application server collection.
The above teaching of determining an application server collection offers significant flexibility of how to determine an application server collection of application servers which will receive one of the duplicated application service requests. The application server collection can be determined specifically for every application client and/or for every type of application service. An approach which is based on static information by reading profile information is beneficial due its low overhead, easy implementation and high performance. An approach based on dynamic information as the set of currently active application servers is beneficial due to the fact that application service requests will be sent only to application servers which are ready for service. Regardless of which of the teaching will be used, they all have in common that they allow control of workload and performance across the set of application servers. In addition, all of the approaches have in common that they are not limited to a certain policy; such that control may be exercised based on the distance between application client and application servers, importance and priority of application client and server etc.
Additional advantages are accomplished if the application servers each comprise a hot pool of one or a multitude of application instances, being executed in the same or a multitude of address-spaces, sharing an input queue. Additionally, the application servers might execute on the same and/or a cluster of computer systems. Furthermore, the application client and the application servers may be implemented on the same and/or different computer systems.
By virtue of this teaching, the complete spectrum of hardware and software-based redundancy approaches are made available for exploitation. The current teaching does not impose any restrictions such as the number of application instance, the number and location of application servers, or the number of address-spaces in which the application instances are executed.
Additional advantages are accomplished by sending the application service request in a message via a messaging system with guaranteed delivery. By exploiting a messaging system for delivery of an application service request automatically ensures message integrity. Once the application client has sent the application service request via such a messaging system, no further provisions have to be made by the application client against losses. All in all, availability of the overall system is further increased.